Python 实例一 统计指定文件的行数或读取指定文件指定行数的内容

这篇博客介绍了如何使用Python来统计指定文件的行数以及高效地读取文件的特定行内容。通过open函数和不同的文件模式进行文件操作,如'r'只读模式和'a'追加模式。同时,展示了利用linecache模块读取大文件的全部内容,即便对于1G大小的文件也能保持较好的效率。
摘要由CSDN通过智能技术生成

一. 基础知识

统计指定文件的行数,必须先打开读取文件内容,用到open/文件操作: f=open('/tmp/hello','w') #open(路径+文件名,读写模式) #读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式 如:'rb','wb','r+b'等等

读写模式的类型有:

rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278) w     以写方式打开, a     以追加模式打开 (从 EOF 开始, 必要时创建新文件) r+     以读写模式打开 w+     以读写模式打开 (参见 w ) a+     以读写模式打开 (参见 a ) rb     以二进制读模式打开 wb     以二进制写模式打开 (参见 w ) ab     以二进制追加模式打开 (参见 a ) rb+    以二进制读写模式打开 (参见 r+ ) wb+    以二进制读写模式打开 (参见 w+ ) ab+    以二进制读写模式打开 (参见 a+ )

二. 统计文件行数示例: 1.(小文件) pycharm 开发环境中新建 #coding=utf-8 count = len(open('F:\test\test.txt','rU').rea
可以使用Python文件读取和字符串操作来实现统计Verilog代码行数。具体的实现步骤如下: 1. 定义一个函数,接收一个文件名参数。打开文件读取其中的内容。 ```python def count_verilog_lines(file_name): with open(file_name, 'r') as f: content = f.read() ``` 2. 使用正则表达式匹配文件中的注释、空行和模块实例化。注释和空行可以通过匹配 "//" 和 "/\*"、"\*/" 来实现。模块实例化可以通过匹配 "module_name instance_name" 来实现。 ```python import re def count_verilog_lines(file_name): with open(file_name, 'r') as f: content = f.read() # 匹配注释和空行 pattern_comment = r"//.*?$|/\*.*?\*/|^\s*$" content = re.sub(pattern_comment, "", content, flags=re.M) # 匹配模块实例化 pattern_instance = r"\b\w+\s+\w+\s*\(" content = re.sub(pattern_instance, "", content) # 统计有效行数 lines = content.split("\n") count = len(lines) return count ``` 3. 统计 include 文件中的代码行数。可以通过递归调用 `count_verilog_lines` 函数来实现。 ```python def count_verilog_lines(file_name): with open(file_name, 'r') as f: content = f.read() # 匹配注释和空行 pattern_comment = r"//.*?$|/\*.*?\*/|^\s*$" content = re.sub(pattern_comment, "", content, flags=re.M) # 匹配模块实例化 pattern_instance = r"\b\w+\s+\w+\s*\(" content = re.sub(pattern_instance, "", content) # 统计有效行数 lines = content.split("\n") count = len(lines) # 统计 include 文件中的代码行数 pattern_include = r"`include\s+\"(.+?)\"" includes = re.findall(pattern_include, content) for include in includes: include_count = count_verilog_lines(include) count += include_count return count ``` 完整的代码如下: ```python import re def count_verilog_lines(file_name): with open(file_name, 'r') as f: content = f.read() # 匹配注释和空行 pattern_comment = r"//.*?$|/\*.*?\*/|^\s*$" content = re.sub(pattern_comment, "", content, flags=re.M) # 匹配模块实例化 pattern_instance = r"\b\w+\s+\w+\s*\(" content = re.sub(pattern_instance, "", content) # 统计有效行数 lines = content.split("\n") count = len(lines) # 统计 include 文件中的代码行数 pattern_include = r"`include\s+\"(.+?)\"" includes = re.findall(pattern_include, content) for include in includes: include_count = count_verilog_lines(include) count += include_count return count ``` 调用函数: ```python count = count_verilog_lines("test.v") print("代码行数:", count) ``` 其中,"test.v" 是要统计的 Verilog 代码文件名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值